package com.castle.fortress.admin.study.exam.dto;

import com.baomidou.mybatisplus.annotation.TableField;
import com.castle.fortress.admin.member.dto.MemberAuthorityDto;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import java.util.Date;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.List;

/**
 * 试卷管理 实体类
 *
 * @author castle
 * @since 2023-02-10
 */
@Data
public class StudyExamDto implements Serializable {
	private static final long serialVersionUID = 1L;
	@JsonSerialize(using = ToStringSerializer.class)
	@JsonProperty("id")
	private Long id;
	@JsonProperty("examName")
	private String examName;
	@JsonProperty("coverImg")
	private String coverImg;
	@JsonProperty("examTime")
	private Integer examTime;
	@JsonProperty("examExplain")
	private String examExplain;
	@JsonProperty("examNum")
	private Integer examNum;
	@JsonProperty("isLimited")
	private Integer isLimited;
	@JsonProperty("showAnswerTime")
	private Integer showAnswerTime;
	@JsonProperty("examShowType")
	private Integer examShowType;
	@DateTimeFormat(
		pattern = "yyyy-MM-dd HH:mm:ss"
	)
	@JsonFormat(
		pattern = "yyyy-MM-dd HH:mm:ss"
	)
	@JsonProperty("examStartTime")
	private Date examStartTime;
	@DateTimeFormat(
		pattern = "yyyy-MM-dd HH:mm:ss"
	)
	@JsonFormat(
		pattern = "yyyy-MM-dd HH:mm:ss"
	)
	@JsonProperty("examEndTime")
	private Date examEndTime;
	@JsonProperty("mode")
	private Integer mode;
	@JsonProperty("singleNum")
	private Integer singleNum;
	@JsonProperty("singleScore")
	private Integer singleScore;
	@JsonProperty("multipleNum")
	private Integer multipleNum;
	@JsonProperty("multipleScore")
	private Integer multipleScore;
	@JsonProperty("qualifiedScore")
	private Integer qualifiedScore;
	@JsonProperty("totalScore")
	private Integer totalScore;
	@JsonProperty("status")
	private Integer status;
	@JsonProperty("isOutOrder")
	private Integer isOutOrder;
	@JsonProperty("isRemind")
	private Integer isRemind;
	@JsonProperty("startRemind")
	private String startRemind;
	@JsonProperty("endRemind")
	private String endRemind;
	@JsonProperty("pushMessage")
	private Integer pushMessage;
	@DateTimeFormat(
		pattern = "yyyy-MM-dd HH:mm:ss"
	)
	@JsonFormat(
		pattern = "yyyy-MM-dd HH:mm:ss"
	)
	@JsonProperty("quartzTime")
	private Date quartzTime;
	@JsonSerialize(using = ToStringSerializer.class)
	@JsonProperty("createUser")
	private Long createUser;
	@DateTimeFormat(
		pattern = "yyyy-MM-dd HH:mm:ss"
	)
	@JsonFormat(
		pattern = "yyyy-MM-dd HH:mm:ss"
	)
	@JsonProperty("createTime")
	private Date createTime;
	@JsonSerialize(using = ToStringSerializer.class)
	@JsonProperty("updateUser")
	private Long updateUser;
	@DateTimeFormat(
		pattern = "yyyy-MM-dd HH:mm:ss"
	)
	@JsonFormat(
		pattern = "yyyy-MM-dd HH:mm:ss"
	)
	@JsonProperty("updateTime")
	private Date updateTime;
	@JsonProperty("isDeleted")
	private Integer isDeleted;
	@JsonProperty("createUserName")
	private String createUserName;
	@ApiModelProperty(value = "该试卷的可见范围")
	private MemberAuthorityDto memberAuthorityDto;
	@ApiModelProperty(value = "该试卷的题目列表")
	private List<StudyExamQuestionDto> examQuestionDTOList;
	@ApiModelProperty(value = "已答题数目")
	private Integer answeredNum;
	@ApiModelProperty(value = "会员得分")
	private Integer memberScore;
	@ApiModelProperty(value = "会员考试记录id")
	private Long recordId;
	@ApiModelProperty(value = "会员考试耗时")
	private Integer timeConsuming;
	/**
	 * 题库分类编码
	 */
	@JsonSerialize(using = ToStringSerializer.class)
	@JsonProperty("qbTypeId")
	private Long qbTypeId;
	/**
	 * 题库编码
	 */
	@JsonSerialize(using = ToStringSerializer.class)
	@JsonProperty("qbId")
	private Long qbId;
	/**
	 * 剩余次数
	 */
	@JsonSerialize(using = ToStringSerializer.class)
	@JsonProperty("remainingExamNum")
	private Long remainingExamNum;

}
